package graph;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;

import back.Archivos;
import back.Juego;

/**
 * Crea los botones para las opciones del menu principal y los 
 * eventos para cada boton. 
 */
public class MenuPrincipal extends JPanel{

	private static final long serialVersionUID = 1L;
	
	/*
	 * Agrega los botones al menu principal
	 */
	public MenuPrincipal() {
		setLayout(null);
		add(nuevoJuego());
		add(cargarJuego());
		add(mostrarPuntajes());
		add(salir());
		
	}
	/*
	 * Crea el boton Nuevo Juego
	 * 
	 * @return JButton button
	 */
	private JButton nuevoJuego() {
		JButton button = new JButton("Nuevo Juego");
		button.setToolTipText("Comienza un juego nuevo");
		button.setBounds(45, 50, 170, 50);
		
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				new NuevoJuego();
			}
		});
		return button;
	}
	/*
	 * Crea el boton salir
	 * @return JButton button
	 */
	private JButton salir() {
		JButton button = new JButton("Salir");
		button.setToolTipText("Sale del juego");
		button.setBounds(45, 260, 170, 50);

		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		return button;		
	}
	/*
	 * Crea el boton Mostrar Puntajes
	 * @return JButton button
	 */
	private JButton mostrarPuntajes() {
		JButton button = new JButton("Mejores puntajes");
		button.setToolTipText("Muestra los mejores puntajes");
		button.setBounds(45, 190, 170, 50);

		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JFrame window = new MenuMostrarPuntajes();
				window.setVisible(true);
			}
		});
		return button;
	}
	/*
	 * Crea el boton Cargar Juego
	 * @return JButton button
	 */
	private JButton cargarJuego() {
		JButton button = new JButton("Cargar Juego");
		button.setToolTipText("Comienza un juego guardado");
		button.setBounds(45, 120, 170, 50);
		button.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				JFileChooser selector=new JFileChooser("./guardados");
				selector.showOpenDialog(MenuPrincipal.this);
				File archivo=selector.getSelectedFile();
				if(archivo != null){
				try {
	    			File[] niveles;
					niveles = Archivos.cargarNiveles();
					Juego juego= new Juego(niveles);
					Archivos.cargaJuego(juego, archivo);
					WindowGame game=new WindowGame(juego);
					game.setVisible(true);
				} catch (Exception e1) {
					String mensaje = "Problemas al cargar el archivo";
					new MensajeFrame(mensaje);
					}}		
			}
		});
		
		return button;
	}
	
	
	
}
